package sadi.server;

import sadi.util.*;

public abstract class BlackJackers implements BJConstants
{
	//Instance Variables
	private String username;
	private int status;
	private int bestChance;
		
	public BlackJackers(String username, int status)
	{
		this.username = username;
		this.status = status;
		bestChance = 0;
	}
	
	
	
	//Get Username
	public String getUsername()
	{
		return username;
	}
	
	//Set Username
	public void setUsername(String username)
	{
		this.username = username;
	}
	
	//Get Status
	public int getStatus()
	{
		return status;
	}
	
	//Set Status
	public void setStatus(int status)
	{
		this.status = status;
	}
	
	//Get Best Chance to Determine Winner (Excludes Burst Score)
	public int getBestChance()
	{
		return bestChance;
	}
	
	//Set Best Chance to Determine Winner (Excludes Burst Score)	
	protected void setBestChance(int bestChance)
	{
		this.bestChance = bestChance;
	}	
	
	
	
	/*************** ABSTRACT METHODS ***************/
	
	//Reset Counters & Variables Before Starting A New Trial
	public abstract void resetGame();
	
	//Get Current Card Deck
	public abstract String[] getCards();
	
	//Set Initial State of Trial: Drawn 2 Random Cards
	public abstract void initGame(CardsCollection cc, String card1, String card2);
	
	//Signal That Game Is Starting
	//Send 3 Initial Info: Dealer's 1st Card & Player's Randomly Drawn Cards
	public abstract void startGame(String dealerCard);
	
	//Signal For Next Move
	public abstract int nextMove();
	
	//Check Whether Has Next Move To Make
	public abstract boolean hasNextMove();
	
	//Hit Action Process
	public abstract void hit(CardsCollection cc, String card);
	
	//Stand Action Process
	public abstract void stand();
	
	//Split Action Process
	public abstract void split(CardsCollection cc);
	
	//Get Counting Total of Current Deck (Which May Be Burst Score)
	public abstract int getCurrentChance();
}